gtk: remove the private GTK_NO_TEXT_INPUT_MOD_MASK
authorMichael Natterer <mitch@lanedo.com>
Tue, 27 Sep 2011 09:34:19 +0000 (11:34 +0200)
committerMichael Natterer <mitch@gimp.org>
Tue, 27 Sep 2011 09:34:19 +0000 (11:34 +0200)
and use the new public modifier abstraction API.

gtk/gtkfilechooserdefault.c
gtk/gtkimcontextsimple.c
gtk/gtkimmulticontext.c
gtk/gtkprivate.h

index 5ea074df301878a2b198dbf8c4853b46e469ec06..8c3db4cb9456a577967bd5ff7df07c7ff3fac099 100644 (file)
@@ -3724,15 +3724,19 @@ browse_files_key_press_event_cb (GtkWidget   *widget,
                                 gpointer     data)
 {
   GtkFileChooserDefault *impl;
+  GdkModifierType no_text_input_mask;
 
   impl = (GtkFileChooserDefault *) data;
 
+  no_text_input_mask =
+    gtk_widget_get_modifier_mask (widget, GDK_MODIFIER_INTENT_NO_TEXT_INPUT);
+
   if ((event->keyval == GDK_KEY_slash
        || event->keyval == GDK_KEY_KP_Divide
 #ifdef G_OS_UNIX
        || event->keyval == GDK_KEY_asciitilde
 #endif
-       ) && !(event->state & GTK_NO_TEXT_INPUT_MOD_MASK))
+       ) && !(event->state & no_text_input_mask))
     {
       location_popup_handler (impl, event->string);
       return TRUE;
index 1ef6b16be1a3504adde595ca434f523d4e2420a2..721082459b4ae90091ded29ab5382040814d39d1 100644 (file)
@@ -895,7 +895,16 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
       (priv->in_hex_sequence && !hex_keyval &&
        !is_hex_start && !is_hex_end && !is_escape && !is_backspace))
     {
-      if (event->state & GTK_NO_TEXT_INPUT_MOD_MASK ||
+      GdkDisplay *display;
+      GdkModifierType no_text_input_mask;
+
+      display = gdk_window_get_display (event->window);
+
+      no_text_input_mask =
+        gdk_keymap_get_modifier_mask (gdk_keymap_get_for_display (display),
+                                      GDK_MODIFIER_INTENT_NO_TEXT_INPUT);
+
+      if (event->state & no_text_input_mask ||
          (priv->in_hex_sequence && priv->modifiers_dropped &&
           (event->keyval == GDK_KEY_Return ||
            event->keyval == GDK_KEY_ISO_Enter ||
index 28a218d65b37e3b28a4aca29f388c7b1c4c21d6a..5ad4ec670f838a1f888e0a30020ad5a9b87d4727 100644 (file)
@@ -348,24 +348,38 @@ gtk_im_multicontext_filter_keypress (GtkIMContext *context,
   GtkIMContext *slave = gtk_im_multicontext_get_slave (multicontext);
 
   if (slave)
-    return gtk_im_context_filter_keypress (slave, event);
-  else if (event->type == GDK_KEY_PRESS &&
-           (event->state & GTK_NO_TEXT_INPUT_MOD_MASK) == 0)
     {
-      gunichar ch;
+      return gtk_im_context_filter_keypress (slave, event);
+    }
+  else
+    {
+      GdkDisplay *display;
+      GdkModifierType no_text_input_mask;
 
-      ch = gdk_keyval_to_unicode (event->keyval);
-      if (ch != 0 && !g_unichar_iscntrl (ch))
+      display = gdk_window_get_display (event->window);
+
+      no_text_input_mask =
+        gdk_keymap_get_modifier_mask (gdk_keymap_get_for_display (display),
+                                      GDK_MODIFIER_INTENT_NO_TEXT_INPUT);
+
+      if (event->type == GDK_KEY_PRESS &&
+          (event->state & no_text_input_mask) == 0)
         {
-          gint len;
-          gchar buf[10];
+          gunichar ch;
+
+          ch = gdk_keyval_to_unicode (event->keyval);
+          if (ch != 0 && !g_unichar_iscntrl (ch))
+            {
+              gint len;
+              gchar buf[10];
 
-          len = g_unichar_to_utf8 (ch, buf);
-          buf[len] = '\0';
+              len = g_unichar_to_utf8 (ch, buf);
+              buf[len] = '\0';
 
-          g_signal_emit_by_name (multicontext, "commit", buf);
+              g_signal_emit_by_name (multicontext, "commit", buf);
 
-          return TRUE;
+              return TRUE;
+            }
         }
     }
 
index 57789584b215236693391c292e2f33993f7c0686..b8bb90ecb9e9aa8519e31118aa2cb0a53f29d267 100644 (file)
@@ -67,16 +67,6 @@ const gchar *_gtk_get_data_prefix ();
 #define GTK_DEFAULT_ACCEL_MOD_MASK GDK_META_MASK
 #endif
 
-/* When any of these modifiers are active, a key
- * event cannot produce a symbol, so should be
- * skipped when handling text input
- */
-#ifndef GDK_WINDOWING_QUARTZ
-#define GTK_NO_TEXT_INPUT_MOD_MASK (GDK_MOD1_MASK | GDK_CONTROL_MASK)
-#else
-#define GTK_NO_TEXT_INPUT_MOD_MASK (GDK_MOD2_MASK | GDK_CONTROL_MASK)
-#endif
-
 #ifndef GDK_WINDOWING_QUARTZ
 #define GTK_EXTEND_SELECTION_MOD_MASK GDK_SHIFT_MASK
 #define GTK_MODIFY_SELECTION_MOD_MASK GDK_CONTROL_MASK